Tecnologia em Sistemas para Internet – IFSP • Campus Araraquara

Sistema de Gerenciamento de Torneio de Futevôlei
(Prog. Orientada a Objetos com Java)

Projeto acadêmico em Java para praticar classes, atributos, métodos, objetos, encapsulamento, static, final, associação, agregação, composição, herança, classe abstrata, e interfaces.

Autor: Prof. José Rodolfo Beluzo

Data de Entrega e avaliação oral:11/12/2025 - 19h.

OBS: O trabalho pode ser realizado de forma individual, duplas ou no máximo trios.

A avaliação oral será realizada na data da entrega. O professor irá pedir explicações sobre onde se encontram os conceitos aplicados no código. Todos os membros devem saber responder e a pergunta será direcionada, sofrendo todo o grupo a penalidade da pergunta não respondida de forma errada.

1) Objetivo

Modelar e implementar um mini-sistema para registrar e consultar informações de um torneio de futevôlei usando apenas os conceitos de OO listados acima.

2) Escopo funcional (mínimo)

Observação: Não utilizar coleções avançadas, exceções customizadas, interfaces, enums, ou padrões que não estejam na lista dos conceitos citados no topo da descrição.

3) Entidades e relacionamentos

Pessoa classe abstrata

  • Herança: base para Jogador.
  • Encapsulamento: nome, documento.
  • Método abstrato: getIdentificacao().

Jogador extends Pessoa

  • final: nascimento imutável.
  • Sobrescrita: implementa getIdentificacao().
  • super: construtor chama Pessoa.

Dupla agregação

  • É formada por dois Jogador; jogadores existem fora da dupla.
  • Método: getApresentacao().

Partida associação + composição

  • Associação com duas Dupla (mandante e visitante).
  • Composição de SetPartida (sets vivem e morrem com a partida).
  • static: gerador sequencial de IDs.

SetPartida composição

  • final: placares imutáveis.
  • Valida regras de vitória do set (mínimo e diferença).

4) Regras de negócio (resumo)

5) Mapeamento dos conceitos de OO

6) Como compilar e executar

####################################################
    Criar um projeto java no VS code; 
    definir os pacotes necessários e organizar 
    o código dentro dos pacotes.
    Executar o programa principal e verificar 
    se o programa exibe a saída esperada.

7) Programa principal (Main.java)



// Demonstração do uso dos conceitos solicitados
public class Main {
    public static void main(String[] args) {
        // --- Jogadores (objetos) ---
        Jogador a1 = new Jogador("Marcos", "111.111.111-11", "1993-07-01");
        Jogador a2 = new Jogador("Rafael", "222.222.222-22", "1992-02-10");
        Jogador b1 = new Jogador("Tiago",  "333.333.333-33", "1990-03-05");
        Jogador b2 = new Jogador("Leandro","444.444.444-44", "1991-12-12");

        // --- Duplas (agregação de jogadores) ---
        Dupla areiaBraba = new Dupla("Areia Braba", a1, a2);
        Dupla ventoSul   = new Dupla("Vento Sul", b1, b2);

        // --- Partida (associação entre duplas, composição de sets) ---
        Partida p1 = new Partida(areiaBraba, ventoSul, "Arena Central", "2025-11-15");

        System.out.println(p1);
        System.out.println(a1.getIdentificacao()); // herança + sobrescrita
        System.out.println(b1.getIdentificacao());

        // Registrar sets válidos (regras: 21+ e diferença >= 2)
        boolean s1 = p1.registrarSet(21, 17); // 1–0 Areia Braba
        boolean s2 = p1.registrarSet(18, 21); // 1–1
        boolean s3 = p1.registrarSet(22, 20); // 2–1 Areia Braba (encerra)

        System.out.println("Set1 registrado? " + s1);
        System.out.println("Set2 registrado? " + s2);
        System.out.println("Set3 registrado? " + s3);

        System.out.println("Status: " + p1.getStatus());
        System.out.println("Placar: " + p1.placarResumo());

        Dupla vencedor = p1.getVencedor();
        System.out.println("Vencedor: " + (vencedor == null ? "Indefinido" : vencedor.getApresentacao()));

        // Tentativa de registrar outro set após encerrar (deve falhar)
        boolean s4 = p1.registrarSet(25, 23);
        System.out.println("Set4 (após encerrar) registrado? " + s4);

        System.out.println(p1);
    }
}